library(ggplot2)
library(gganimate)
library(plotly)
library(gifski)
library(dplyr)
library(bdl)
12 Animacje dla rzeczywistych danych z BDL
Grzegorz Kończak
12.1 📘 Załadowanie pakietów i pobranie zmiennych z Banku Danych Lokalnych
12.1.1 ❕ Załadowanie pakietów
12.1.2 ️✔️ Dane są pobierane z Banku Danych Lolalnych
12.1.2.1 🔗 Sklepy i stacje paliw - dane w BDL
12.1.3 Wyświetlenie informacji o zmiennych z BDL
search_variables("sklepy")
# A tibble: 3 × 7
id subjectId n1 n2 level measureUnitId measureUnitName
<int> <chr> <chr> <chr> <int> <int> <chr>
1 510 P1626 ogółem sklepy 6 35 ob.
2 511 P1626 sektor prywatny sklepy 6 35 ob.
3 58964 P2323 sklepy <NA> 3 35 ob.
get_variables("P2323")
# A tibble: 2 × 6
id subjectId n1 level measureUnitId measureUnitName
<int> <chr> <chr> <int> <int> <chr>
1 58964 P2323 sklepy 3 35 ob.
2 58965 P2323 stacje paliw 3 35 ob.
12.1.4 Pobranie danych z Banku Danych lokalnych - stacje paliw
get_data_by_variable("58965",year="2021",unitLevel=2)
# A tibble: 16 × 8
id name year val measureUnitId measureName attrId attributeDescription
<chr> <chr> <chr> <int> <chr> <chr> <int> <chr>
1 0112… MAŁO… 2021 549 35 ob. 1 ""
2 0124… ŚLĄS… 2021 810 35 ob. 1 ""
3 0208… LUBU… 2021 283 35 ob. 1 ""
4 0230… WIEL… 2021 878 35 ob. 1 ""
5 0232… ZACH… 2021 429 35 ob. 1 ""
6 0302… DOLN… 2021 490 35 ob. 1 ""
7 0316… OPOL… 2021 185 35 ob. 1 ""
8 0404… KUJA… 2021 514 35 ob. 1 ""
9 0422… POMO… 2021 435 35 ob. 1 ""
10 0428… WARM… 2021 254 35 ob. 1 ""
11 0510… ŁÓDZ… 2021 695 35 ob. 1 ""
12 0526… ŚWIĘ… 2021 265 35 ob. 1 ""
13 0606… LUBE… 2021 485 35 ob. 1 ""
14 0618… PODK… 2021 448 35 ob. 1 ""
15 0620… PODL… 2021 239 35 ob. 1 ""
16 0714… MAZO… 2021 1169 35 ob. 1 ""
12.2 ✔️ Konstrukcja wykresów dla pobranych zmiennych
12.2.1 Wykres kołowy - liczba stacji paliw
pie_plot(data_type ="variable" ,"58965", "2021", unitLevel = "1")
12.2.2 Wykres rozrzutu - liczba sklepów i stacji paliw
scatter_2var_plot(data_type = "variable" ,c("58964", "58965"), unitLevel = "2",year=2021)+labs(x='sklepy',y='stacje paliw')
12.2.3 Wykres liniowy - liczba sklepów
line_plot(data_type = "variable", unitParentId = "010000000000", varId = "58964",unitLevel=2)
12.2.4 Kartogram - liczba stacji paliw
generate_map(varId = "58965", year = "2021")
12.3 📘 Animacje dla danych z BDL
12.3.1 Przygotowanie animacji - sklepy i stacje paliw
=get_data_by_variable(c("72305","58964","58965"),unitLevel=2)
dane$year=as.numeric(dane$year)
dane=dane %>% filter(year >2003)
dane<- ggplot(
p
dane, aes(x = val_58964, y=val_58965, size = val_72305/1000000, colour = name)
+
) geom_point(show.legend = TRUE, alpha = 0.6) +
scale_color_viridis_d() +
scale_size(range = c(2, 10)) +
labs(x = "liczba sklepów", y = "liczba stacji paliw")+
labs(color="Województwo",size="Ludność w mln.")
p
12.3.2 Uruchomienie animacji
+ transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}") p
12.3.3 Przygotowanie animacji - sklepy
<- ggplot(dane, aes(factor(year),val_58964 )) +
anim_sklepy geom_boxplot(color=4,fill = "grey") +
labs(x = "Rok", y = "Liczba sklepów")+
transition_manual(year, cumulative = TRUE)
12.3.4 Uruchomienie animacji
animate(anim_sklepy, height = 5, width = 6, units = "in", res = 150, end_pause=6,duration=15)
12.3.5 Przygotowanie animacji - stacje paliw
<- ggplot(dane, aes(factor(year),val_58965 )) +
anim_sp geom_boxplot(color=4,fill = "grey") +
labs(x = "Rok", y = "Liczba stacji paliw")+
transition_manual(year, cumulative = TRUE)
12.3.6 Uruchomienie animacji
animate(anim_sp, height = 5, width = 6, units = "in", res = 150, end_pause=6,duration=15)
12.3.7 Przygotowanie animacji - sklepy
<- ggplot(dane, aes(factor(year),val_58964 )) +
anim_sklepy geom_boxplot() +
labs(x = "Rok", y = "Liczba sklepów")+
transition_manual(year, cumulative = TRUE)
12.3.8 Uruchomienie animacji
animate(anim_sklepy, height = 5, width = 6, units = "in", res = 150, end_pause=6,duration=15)
12.3.9 Przygotowanie animacji - sklepy
<-ggplot(dane, aes(val_58964/val_72305*1000, fill = name)) +
pgeom_histogram()
+ transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}",x="Liczba sklepów na 1 tys. mieszkańców") p
12.3.10 Przygotowanie animacji - sklepy i stacje paliw
=get_data_by_variable(c("72305","58964","58965"),unitLevel=2)
dane$year=as.numeric(dane$year)
dane=dane %>% filter(year >2003) dane
12.3.11 Przygotowanie animacji - stacje paliw
<- ggplot(
p
dane, aes(x = val_58964, y=val_58965, size = val_72305, colour = name)
+
) geom_point(show.legend = TRUE, alpha = 0.6) +
scale_color_viridis_d() +
scale_size(range = c(2, 10)) +
labs(x = "Liczba sklepów", y = "Liczba stacji paliw")
p
12.3.12 Uruchomienie animacji
+ transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}") p
12.3.13 Przygotowanie animacji - sklepy i stacje paliw
+ facet_wrap(~name) +
p transition_time(year) +
labs(title = "Rok: {format(frame_time,1,4)}")
12.4 📘 Liczba urodzeń i zgonów na 1000 mieszkańców
12.4.1 Pobranie danych z Banku Danych Lokalnych
=get_data_by_variable(c("72305","63221","63215"),unitLevel=2)
dane$year=as.numeric(dane$year)
dane=dane %>% filter(year >2004) dane
12.4.2 Przygotowanie animacji - liczba urodzeń i zgonów na 1000 mieszkańców
<- ggplot(
p
dane, aes(x = val_63221/val_72305*1000, y=val_63215/val_72305*1000, size = val_72305/1000000, colour = name) ) +
geom_point(show.legend = TRUE, alpha = 0.6) +
scale_color_viridis_d() +
scale_size(range = c(2, 10)) +
labs(x = "Urodzenia żywe na 1000 mieszkańców", y = "Zgony na 1000 mieszkańców")+
labs(color="Województwo",size="Ludność w mln.")
p
12.4.3 Animacja
=p + transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}")
animanimate(anim, height = 8, width = 8, units = "in", res = 150, end_pause=6,duration=15)
12.4.4 Animacja - inna forma uruchomienia
+ transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}") p
12.4.5 Prezentacja w oknach (facet_wrap) - liczba urodzeń i zgonów na 1000 mieszkańców
+ facet_wrap(~name) +
p transition_time(year) +
labs(title = "Rok: {format(frame_time,1,4)}")
12.4.6 Animacja - efekt shadow_wake)
+ transition_time(year) +
plabs(title = "Rok: {format(frame_time,1,4)}") +
shadow_wake(wake_length = 0.1, alpha = FALSE)
12.4.7 Animacja - efekt shadow_mark)
+ transition_time(year) +
plabs(title = "Rok: {format(frame_time,1,4)}") +
shadow_mark(alpha = 0.3, size = 0.5)
12.4.8 Przygotowanie animacji - boxplot
<- ggplot(dane, aes(factor(year), val_63221/val_72305*1000)) +
anim2 geom_boxplot(color=3) +
transition_manual(year, cumulative = TRUE)+
labs(x = "Rok", y = "urodzenia żywe na 1000 ludności")
12.4.9 Animacja
anim2animate(anim2, height = 6, width = 8, units = "in", res = 150, end_pause=6,duration=15)
12.4.10 Przygotowanie animacji - wykres rozrzutu
<- ggplot(dane, aes(x=val_63221/val_72305*1000, y=val_63215/val_72305*1000,colour=name)) +
anim geom_point() +
labs(title = "{closest_state}") +
transition_states(year, transition_length = 4, state_length = 1)+
labs(x = "Urodzenia żywe na 1000 ludności", y = "Zgony na 1000 ludności")+
labs(color="Województwo")
12.4.11 Animacja
animate(anim, height = 6, width = 8, units = "in", res = 150, end_pause=6,duration=15)
12.4.12 Przygotowanie animacji - wykres rozrzutu + dodatkowe parametry
<- anim +
anim1 shadow_wake(wake_length = 0.05)
animate(anim1, height = 6, width = 8, units = "in", res = 150, end_pause=6,duration=15)
12.4.13 Animacja
<- anim +
anim2 shadow_wake(0.05, size = 2, alpha = FALSE, colour = 'grey92')
animate(anim2, detail = 5,height = 6, width = 8, units = "in", res = 150, end_pause=6,duration=15)
12.5 Mieszkania
12.5.1 Pobranie danych z BDL
=get_data_by_variable(c("633688","633690","633691"),unitLevel=2)
dane$year=as.numeric(dane$year)
dane=dane %>% filter(year >2004) dane
12.5.2 Przygotowanie animacji
<- ggplot(
p
dane, aes(x = val_633688, y=val_633691, colour = name) ) +
geom_point(show.legend = TRUE, alpha = 0.6) +
scale_color_viridis_d() +
scale_size(range = c(2, 10)) +
labs(x = "do 40m2", y = "pow 80m2")
p
12.5.3 Animacja
<-p + transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}")
r
animate(r, detail = 5,height = 6, width = 8, units = "in", res = 150, end_pause=6,duration=15)
12.6 📘 Ceny - woda zimna, węgiel kamienny i energia
12.6.1 Pobranie danych z BDL (cena 1 m3 wody zimnej)
=get_data_by_variable("5070",unitLevel=2)
danetheme_set(theme_bw())
12.6.2 Cena wody zimnej - przygotowanie animacji
=get_data_by_variable("5070",unitLevel=2)
dane<- ggplot(
p
dane,aes(year, val, group = name, color = factor(name))
+
) geom_line() +
scale_color_viridis_d() +
labs(x = "Rok", y = "Cena 1m^3 wody zimnej w zł") +
labs(color="Województwo")+
theme(legend.position = "right")
p
12.6.3 Animacja
+ transition_reveal(as.numeric(year))
p
+
p geom_point() +
transition_reveal(as.numeric(year))
12.6.4 Animacja - dodanie parametrów animacji
=p +
rgeom_point(aes(group = seq_along(as.numeric(year)))) +
transition_reveal(as.numeric(year))
animate(r, detail = 5,height = 6, width = 10, units = "in", res = 150, end_pause=6,duration=15)
12.6.5 Pobranie danych z BDL (cena 1 t węgla kamiennego)
=get_data_by_variable("5029",unitLevel=2) dane
12.6.6 Przygotowanie animacji
<- ggplot(
p
dane,aes(year, val, group = name, color = factor(name))
+
) geom_line() +
scale_color_viridis_d() +
labs(x = "Rok", y = "Cena 1 tony węgla kamiennego w zł") +
labs(color="Województwo")+
theme(legend.position = "right")
p
12.6.7 Animacja
+ transition_reveal(as.numeric(year)) p
12.6.8 Animacja
+
p geom_point() +
transition_reveal(as.numeric(year))
12.6.9 Animacja - dodanie parametrów animacji
=p +
rgeom_point(aes(group = seq_along(as.numeric(year)))) +
transition_reveal(as.numeric(year))
animate(r, detail = 5,height = 6, width = 10, units = "in", res = 150, end_pause=6,duration=15)
12.6.10 Pobranie danych z BDL (cena 1 kWh energii elektrycznej)
=get_data_by_variable("5071",unitLevel=2) dane
12.6.11 Przygotowanie animacji
<- ggplot(
p
dane,aes(year, val, group = name, color = factor(name))
+
) geom_line() +
scale_color_viridis_d() +
labs(x = "Rok", y = "Cena 1kWh energii elektrycznej zł") +
labs(color="Województwo")+
theme(legend.position = "right")
p
12.6.12 Animacja
=p +
rgeom_point(aes(group = seq_along(as.numeric(year)))) +
transition_reveal(as.numeric(year))
animate(r, detail = 5,height = 6, width = 10, units = "in", res = 150, end_pause=6,duration=15)
12.7 📘 Dochody na 1 mieszkańca w powiatach
12.7.1 Pobranie danych z BDL
get_variables("P2627")
# A tibble: 18 × 7
id subjectId n1 n2 level measureUnitId measureUnitName
<int> <chr> <chr> <chr> <int> <int> <chr>
1 76973 P2627 gminy łącznie z m… ogół… 6 4 zł
2 76974 P2627 miasta na prawach… ogół… 6 4 zł
3 76975 P2627 gminy bez miast n… ogół… 6 4 zł
4 76976 P2627 gminy łącznie z m… doch… 6 4 zł
5 76977 P2627 miasta na prawach… doch… 6 4 zł
6 76978 P2627 gminy bez miast n… doch… 6 4 zł
7 76979 P2627 gminy łącznie z m… udzi… 6 4 zł
8 76980 P2627 miasta na prawach… udzi… 6 4 zł
9 76981 P2627 gminy bez miast n… udzi… 6 4 zł
10 76982 P2627 gminy łącznie z m… doch… 6 4 zł
11 76983 P2627 miasta na prawach… doch… 6 4 zł
12 76984 P2627 gminy bez miast n… doch… 6 4 zł
13 149128 P2627 gminy łącznie z m… doch… 6 4 zł
14 149129 P2627 miasta na prawach… doch… 6 4 zł
15 149130 P2627 gminy bez miast n… doch… 6 4 zł
16 149131 P2627 gminy łącznie z m… doch… 6 4 zł
17 149132 P2627 miasta na prawach… doch… 6 4 zł
18 149133 P2627 gminy bez miast n… doch… 6 4 zł
get_data_by_variable("76974",unitLevel=2)
# A tibble: 336 × 8
id name year val measureUnitId measureName attrId attributeDescription
<chr> <chr> <chr> <dbl> <chr> <chr> <int> <chr>
1 0112… MAŁO… 2002 2022 4 zł 1 ""
2 0112… MAŁO… 2003 2098 4 zł 1 ""
3 0112… MAŁO… 2004 2379 4 zł 1 ""
4 0112… MAŁO… 2005 2674 4 zł 1 ""
5 0112… MAŁO… 2006 3055. 4 zł 1 ""
6 0112… MAŁO… 2007 3607. 4 zł 1 ""
7 0112… MAŁO… 2008 3876. 4 zł 1 ""
8 0112… MAŁO… 2009 4122. 4 zł 1 ""
9 0112… MAŁO… 2010 4430. 4 zł 1 ""
10 0112… MAŁO… 2011 4412. 4 zł 1 ""
# ℹ 326 more rows
12.7.2 Przygotowanie animacji
# 76974 P2627 miasta na prawach powiatu
# ogółem
=get_data_by_variable("76974",unitLevel=2)
dane<- ggplot(
p
dane,aes(year, val, group = name, color = factor(name))
+
) geom_line() +
scale_color_viridis_d() +
labs(x = "Rok", y = "Dochody na 1 mieszkańca miast na prawach powiatu w zł") +
labs(color="Województwo")+
theme(legend.position = "right")
p
12.7.3 Animacja
=p +
rgeom_point(aes(group = seq_along(as.numeric(year)))) +
transition_reveal(as.numeric(year))
animate(r, detail = 5,height = 6, width = 10, units = "in", res = 150, end_pause=6,duration=15)